package hh.leecode.stack;

import java.util.HashMap;
import java.util.Map;
import java.util.Stack;

/**
 * 给一组括号,验证他的合法,即: 一个右括号的左边必须跟一个左括号, ()  {}
 * ({{(}} 不合法, 没差两个)'
 * ({())} 不合法, ))不成对.
 */
public class 栈_括号验证 {


    public static void main(String[] args) {
        String s = "({{(}}";
        // String s = "({{()}})";

        Map map = new HashMap();
        map.put(')', '(');
        map.put(']', '[');
        map.put('}', '{');

        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            if (map.containsKey(s.charAt(i))) {
                Character pop = stack.pop();
                if (pop == null || pop != map.get(s.charAt(i))) {
                    throw new RuntimeException("不合法");
                }
            } else
                stack.push(s.charAt(i));
        }


    }
}
